 class Maybe {

   static of = value => {
     return new Maybe(value);
   }

   constructor(value) {
     this._value = value;
   };

   /** 错误判断 **/
   isNothing = () => {
     return [null, undefined].includes(this._value);
   }

   map = (fn) => {
     return this.isNothing() ? Maybe.of(this._value) : Maybe.of(fn(this._value));
   }
 };

 class Container {
   static of = value => {
     return new Container(value);
   };

   constructor(value) {
     this._value = value;
   };

   map = (fn) => {
     return Container.of(fn(this._value));
   }
 }

 module.exports = {
   Maybe,
   Container
 }